/*
 * 创建日期 2009-11-26
 *
 * 成都天和软件公司
 * 电话：028-85425861
 * 传真：028-85425861-8008
 * 邮编：610041 
 * 版权所有
 */
package  org.fantasy.common.db.bean;

import java.util.Date;

import  org.fantasy.common.util.NumberUtil;
import  org.fantasy.common.util.StringUtil;

/**
 *  查询结果中一行中的一列。
 * @author: 王文成
 * @version: 1.0
 * @since 2009-11-26
 */
public class Cell {

	/**
	 * 名称比如:custId
	 */
	private String name;

	/**
	 * 值
	 */
	private Object value;

	/**
	 * 列的类
	 */
	private Class<?> colClass;

	/**
	 * 列名 CUST_ID
	 */
	private String colName;

	public Cell() {

	}

	public Cell(String name, Object value) {
		this.name = name;
		this.value = value;
		this.colClass = value.getClass();
	}

	public Cell(Object value) {
		this(null, value);
	}

	public Class<?> getColClass() {
		return colClass;
	}

	public void setColClass(Class<?> colClass) {
		this.colClass = colClass;
	}

	public String getColName() {
		return colName;
	}

	public void setColName(String colName) {
		this.colName = colName;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getDate() {
		Class cls = getColClass();
		if (cls != null && Date.class.isAssignableFrom(cls)) {
			return (Date) value;
		} else {
			return null;
		}
	}

	public double getDouble() {
		return getNumber().doubleValue();
	}

	public int getInt() {
		return getNumber().intValue();
	}

	public long getLong() {
		return getNumber().longValue();
	}

	public Number getNumber() {
		if (colClass != null) {
			if (Number.class.isAssignableFrom(colClass)) {
				return (Number) value;
			}
		}
		if (StringUtil.isValid(value)) {
			String v = getString();
			boolean isNumber = NumberUtil.isNumber(v);
			if (isNumber)
				return new Double(v);
		}
		return new Double(0);
	}

	public String getString() {
		return StringUtil.asString(value);
	}

	public Object getValue() {
		return value;
	}

	public boolean isValid() {
		return StringUtil.isValid(value);
	}

	public void setValue(Object value) {
		this.value = value;
	}

	public String getName() {
		return name;
	}

	@Override
	@SuppressWarnings("all")
	public String toString() {
		return getString();
	}
}
